Index: /trunk/LMDZ.COMMON/libf/evolution/NS_dyn_ss_ice_m.F90
===================================================================
--- /trunk/LMDZ.COMMON/libf/evolution/NS_dyn_ss_ice_m.F90	(revision 3984)
+++ /trunk/LMDZ.COMMON/libf/evolution/NS_dyn_ss_ice_m.F90	(revision 3985)
@@ -23,5 +23,5 @@
   use constants_marspem_mod, only: sec_per_sol
   use fast_subs_mars,        only: psv, icelayer_mars, NMAX
-  use comcstfi_h,            only: pi
+  use phys_constants,        only: pi
   implicit none
   integer, parameter :: NP=1   ! # of sites
Index: /trunk/LMDZ.COMMON/libf/evolution/adsorption_mod.F90
===================================================================
--- /trunk/LMDZ.COMMON/libf/evolution/adsorption_mod.F90	(revision 3984)
+++ /trunk/LMDZ.COMMON/libf/evolution/adsorption_mod.F90	(revision 3985)
@@ -89,5 +89,5 @@
 use vertical_layers_mod,   only: ap, bp
 use constants_marspem_mod, only: alpha_clap_h2o, beta_clap_h2o, m_h2o, m_co2,m_noco2, rho_regolith
-use comcstfi_h,            only: pi
+use phys_constants,        only: pi
 
 implicit none
@@ -222,5 +222,5 @@
 use vertical_layers_mod,   only: ap, bp
 use constants_marspem_mod, only: m_co2, m_noco2, rho_regolith
-use comcstfi_h,            only: pi
+use phys_constants,        only: pi
 
 implicit none
Index: /trunk/LMDZ.COMMON/libf/evolution/changelog.txt
===================================================================
--- /trunk/LMDZ.COMMON/libf/evolution/changelog.txt	(revision 3984)
+++ /trunk/LMDZ.COMMON/libf/evolution/changelog.txt	(revision 3985)
@@ -820,2 +820,5 @@
 == 08/12/2025 == JBC
 Addition of a module "tracers" to retain properties of atmospheric tracers.
+
+== 08/12/2025 == JBC
+Addition of a module "phys_constants" to read and store physical parameter of the planet properly, i.e. without going through the module "comcstfi_h" and/or "comconst_mod".
Index: /trunk/LMDZ.COMMON/libf/evolution/glaciers_mod.F90
===================================================================
--- /trunk/LMDZ.COMMON/libf/evolution/glaciers_mod.F90	(revision 3984)
+++ /trunk/LMDZ.COMMON/libf/evolution/glaciers_mod.F90	(revision 3985)
@@ -29,11 +29,8 @@
 SUBROUTINE set_perice4PCM(ngrid,nslope,PCMfrost,is_perh2oice,PCMh2oice,PCMco2ice)
 
-use metamorphism, only: iPCM_h2ofrost
-use comslope_mod, only: subslope_dist, def_slope_mean
-#ifndef CPP_1D
-    use comconst_mod, only: pi
-#else
-    use comcstfi_h,   only: pi
-#endif
+use metamorphism,   only: iPCM_h2ofrost
+use comslope_mod,   only: subslope_dist, def_slope_mean
+use phys_constants, only: pi
+
 
 implicit none
@@ -189,7 +186,7 @@
 SUBROUTINE compute_hmaxglaciers(ngrid,nslope,iflat,def_slope_mean,Tice,name_ice,hmax)
 
-use ice_table_mod, only: rho_ice
-use abort_pem_mod, only: abort_pem
-use comcstfi_h,    only: pi, g
+use ice_table_mod,  only: rho_ice
+use abort_pem_mod,  only: abort_pem
+use phys_constants, only: pi, g
 
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -252,7 +249,7 @@
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
-use ice_table_mod, only: rho_ice
-use abort_pem_mod, only: abort_pem
-use comcstfi_h,    only: pi
+use ice_table_mod,  only: rho_ice
+use abort_pem_mod,  only: abort_pem
+use phys_constants, only: pi
 
 implicit none
Index: /trunk/LMDZ.COMMON/libf/evolution/ice_table_mod.F90
===================================================================
--- /trunk/LMDZ.COMMON/libf/evolution/ice_table_mod.F90	(revision 3984)
+++ /trunk/LMDZ.COMMON/libf/evolution/ice_table_mod.F90	(revision 3985)
@@ -152,5 +152,5 @@
 use comslope_mod,          only: subslope_dist, def_slope_mean
 use constants_marspem_mod, only: porosity
-use comcstfi_h,            only: pi
+use phys_constants,        only: pi
 
 implicit none
Index: /trunk/LMDZ.COMMON/libf/evolution/orbit_param_criterion_mod.F90
===================================================================
--- /trunk/LMDZ.COMMON/libf/evolution/orbit_param_criterion_mod.F90	(revision 3984)
+++ /trunk/LMDZ.COMMON/libf/evolution/orbit_param_criterion_mod.F90	(revision 3985)
@@ -24,5 +24,5 @@
 #endif
 use planete_h,      only: e_elips, obliquit, lsperi
-use comcstfi_h,     only: pi
+use phys_constants, only: pi
 use time_evol_mod,  only: year_bp_ini, var_obl, var_ecc, var_lsp, convert_years
 use lask_param_mod, only: yearlask, obllask, ecclask, lsplask, ini_lask_param_mod, last_ilask
Index: /trunk/LMDZ.COMMON/libf/evolution/pem.F90
===================================================================
--- /trunk/LMDZ.COMMON/libf/evolution/pem.F90	(revision 3984)
+++ /trunk/LMDZ.COMMON/libf/evolution/pem.F90	(revision 3985)
@@ -86,14 +86,12 @@
 use planete_h,                  only: year_day
 use surfini_mod,                only: surfini
-use comcstfi_h,                 only: mugaz
 use metamorphism,               only: ini_frost_id, set_frost4PCM, iPCM_h2ofrost, iPCM_co2frost
-use tracers,                    only: mmol
+use tracers,                    only: mmol, iPCM_qh2o, ini_tracers_id, end_tracers
+use phys_constants,             only: pi, g, r, mugaz, rad, cpp, rcp, read_constants
 
 #ifndef CPP_1D
-    use comconst_mod,             only: pi, rad, g, r, cpp, rcp => kappa
     use iniphysiq_mod,            only: iniphysiq
     use control_mod,              only: iphysiq, day_step, nsplit_phys
 #else
-    use comcstfi_h,               only: pi, rad, g, r, cpp, rcp
     use time_phylmdz_mod,         only: iphysiq, steps_per_sol
     use regular_lonlat_mod,       only: init_regular_lonlat
@@ -141,5 +139,5 @@
 real                                :: time_0
 
-! Variables to read starfi.nc
+! Variables to read startfi.nc
 character(*), parameter :: startfi_name = "startfi.nc" ! Name of the file used to initialize the PEM
 character(2)            :: str2
@@ -364,4 +362,6 @@
 !    I_b Read of the "start.nc" and "starfi.nc"
 !------------------------
+call read_constants(startfi_name)
+
 ! I_b.1 Read "start.nc"
 write(*,*) '> Reading "start.nc"'
@@ -385,5 +385,5 @@
     status = nf90_close(ncid)
 
-    ! Initialization of physics constants and variables (comcstfi_h)
+    ! Initialization of physics constants and variables
     call iniphysiq(iim,jjm,llm,(jjm - 1)*iim + 2,comm_lmdz,daysec,day_ini,dtphys/nsplit_phys,rlatu,rlatv,rlonu,rlonv,aire,cu,cv,rad,g,r,cpp,iflag_phys)
 #else
@@ -763,5 +763,5 @@
                         tsoil_PEM_timeseries(ig,isoil,islope,t) = tsoil_PEM_timeseries(ig,isoil,islope,t)*tsoil_PEM(ig,isoil,islope)/tsoil_avg_old(ig,isoil)
                         ! Update of watersoil density
-                        watersoil_density_PEM_timeseries(ig,isoil,islope,t) = exp(beta_clap_h2o/tsoil_PEM_timeseries(ig,isoil,islope,t) + alpha_clap_h2o)/tsoil_PEM_timeseries(ig,isoil,islope,t)*mmol%h2o/(mugaz*r)
+                        watersoil_density_PEM_timeseries(ig,isoil,islope,t) = exp(beta_clap_h2o/tsoil_PEM_timeseries(ig,isoil,islope,t) + alpha_clap_h2o)/tsoil_PEM_timeseries(ig,isoil,islope,t)**mmol(iPCM_qh2o)/(mugaz*r)
                         if (isnan(tsoil_PEM(ig,isoil,islope))) call abort_pem("PEM - Update Tsoil","NaN detected in tsoil_PEM",1)
                     enddo
@@ -1129,4 +1129,5 @@
 deallocate(q,longitude,latitude,cell_area,tsoil_PEM)
 deallocate(co2_ice,h2o_ice,layerings_map)
+call end_tracers()
 !----------------------------- END OUTPUT ------------------------------
 
Index: /trunk/LMDZ.COMMON/libf/evolution/pemetat0.F90
===================================================================
--- /trunk/LMDZ.COMMON/libf/evolution/pemetat0.F90	(revision 3984)
+++ /trunk/LMDZ.COMMON/libf/evolution/pemetat0.F90	(revision 3985)
@@ -23,8 +23,8 @@
 use callkeys_mod,               only: startphy_file
 use glaciers_mod,               only: rho_co2ice, rho_h2oice
-use comcstfi_h,                 only: r, mugaz, pi
+use phys_constants,             only: pi, r, mugaz
 use surfdat_h,                  only: watercaptag, perennial_co2ice, qsurf
 use metamorphism,               only: frost4PCM, iPCM_h2ofrost, iPCM_co2frost
-use tracers,                    only: mmol
+use tracers,                    only: mmol, iPCM_qh2o
 
 implicit none
@@ -296,5 +296,5 @@
             endif !found
 
-            watersoil_avg(:,nsoil_PCM + 1:nsoil_PEM,islope) = exp(beta_clap_h2o/tsoil_PEM(:,nsoil_PCM + 1:nsoil_PEM,islope) + alpha_clap_h2o)/tsoil_PEM(:,nsoil_PCM + 1:nsoil_PEM,islope)*mmol(igcm_h2o_vap)/(mugaz*r)
+            watersoil_avg(:,nsoil_PCM + 1:nsoil_PEM,islope) = exp(beta_clap_h2o/tsoil_PEM(:,nsoil_PCM + 1:nsoil_PEM,islope) + alpha_clap_h2o)/tsoil_PEM(:,nsoil_PCM + 1:nsoil_PEM,islope)*mmol(iPCM_qh2o)/(mugaz*r)
         enddo ! islope
         write(*,*) 'PEMETAT0: TSOIL done'
@@ -469,5 +469,5 @@
 
 ! First raw initialization
-            watersoil_avg(:,nsoil_PCM + 1:nsoil_PEM,islope) = exp(beta_clap_h2o/tsoil_PEM(:,nsoil_PCM + 1:nsoil_PEM,islope) + alpha_clap_h2o)/tsoil_PEM(:,nsoil_PCM + 1:nsoil_PEM,islope)*mmol%h2o/(mugaz*r)
+            watersoil_avg(:,nsoil_PCM + 1:nsoil_PEM,islope) = exp(beta_clap_h2o/tsoil_PEM(:,nsoil_PCM + 1:nsoil_PEM,islope) + alpha_clap_h2o)/tsoil_PEM(:,nsoil_PCM + 1:nsoil_PEM,islope)**mmol(iPCM_qh2o)/(mugaz*r)
         enddo !islope
         write(*,*) 'PEMETAT0: TSOIL done'
Index: /trunk/LMDZ.COMMON/libf/evolution/phys_constants.F90
===================================================================
--- /trunk/LMDZ.COMMON/libf/evolution/phys_constants.F90	(revision 3985)
+++ /trunk/LMDZ.COMMON/libf/evolution/phys_constants.F90	(revision 3985)
@@ -0,0 +1,89 @@
+MODULE phys_constants
+
+implicit none
+
+real, parameter :: pi = 4.*atan(1.) ! PI = 3.14159...
+
+real :: g     ! Gravity (m/s2)
+real :: r     ! Reduced gas constant,r = 8.314511/(mugaz/1000.0)
+real :: mugaz ! Molar mass of the atmosphere (g/mol)
+real :: rad   ! Radius of the planet (m)
+real :: cpp   ! Cp of the atmosphere
+real :: rcp   ! r/cpp
+
+!=======================================================================
+contains
+!=======================================================================
+
+SUBROUTINE read_constants(fname)
+
+use netcdf
+
+implicit none
+
+! Arguments
+!----------
+character(*), intent(in) :: fname
+
+! Local variables
+!----------------
+real, dimension(:), allocatable :: controle
+integer :: ncid           ! File ID
+integer :: varid_controle ! Variable ID for 'controle'
+integer :: dimid_index    ! Dimension ID for 'index'
+integer :: nindex         ! Size of dimension 'index'
+integer :: ierr           ! Return codes
+
+! Code
+!-----
+! Open the NetCDF file
+ierr = nf90_open(trim(fname),NF90_NOWRITE,ncid)
+if (ierr /= nf90_noerr) then
+    write(*,*) "Error opening file:", trim(nf90_strerror(ierr))
+    error stop
+endif
+
+! Get the dimension size of 'index'
+ierr = nf90_inq_dimid(ncid,"index",dimid_index)
+if (ierr /= nf90_noerr) then
+    write(*,*) "Error getting dimid 'index':", trim(nf90_strerror(ierr))
+    error stop
+endif
+ierr = nf90_inquire_dimension(ncid,dimid_index,len = nindex)
+if (ierr /= nf90_noerr) then
+    write(*,*) "Error getting dimension length:", trim(nf90_strerror(ierr))
+    error stop
+endif
+
+! Get the variable ID for 'controle'
+allocate(controle(nindex))
+ierr = nf90_inq_varid(ncid,"controle",varid_controle)
+if (ierr /= nf90_noerr) then
+    write(*,*) "Error getting variable ID 'controle':", trim(nf90_strerror(ierr))
+    error stop
+endif
+ierr = nf90_get_var(ncid,varid_controle,controle)
+if (ierr /= nf90_noerr) then
+    write(*,*) "Error reading 'controle':", trim(nf90_strerror(ierr))
+    error stop
+endif
+
+! Close the file
+ierr = nf90_close(ncid)
+if (ierr /= nf90_noerr) then
+    write(*,*) "Error closing file:", trim(nf90_strerror(ierr))
+    error stop
+endif
+
+! Initialize the constants with 'controle' data
+rad   = controle(5)
+g     = controle(7)
+mugaz = controle(8)
+rcp   = controle(9)
+r     = 8.314511*1000./mugaz
+cpp   = r/rcp
+deallocate(controle)
+
+END SUBROUTINE read_constants
+
+END MODULE phys_constants
Index: /trunk/LMDZ.COMMON/libf/evolution/recomp_orb_param_mod.F90
===================================================================
--- /trunk/LMDZ.COMMON/libf/evolution/recomp_orb_param_mod.F90	(revision 3984)
+++ /trunk/LMDZ.COMMON/libf/evolution/recomp_orb_param_mod.F90	(revision 3985)
@@ -17,5 +17,5 @@
 use time_evol_mod,    only: year_bp_ini, var_obl, var_ecc, var_lsp
 use lask_param_mod,   only: yearlask, obllask, ecclask, lsplask, end_lask_param_mod, last_ilask
-use comcstfi_h,       only: pi
+use phys_constants,   only: pi
 use planete_h,        only: e_elips, obliquit, lsperi, periheli, aphelie, p_elips, peri_day, year_day
 use call_dayperi_mod, only: call_dayperi
Index: /trunk/LMDZ.COMMON/libf/evolution/stopping_crit_mod.F90
===================================================================
--- /trunk/LMDZ.COMMON/libf/evolution/stopping_crit_mod.F90	(revision 3984)
+++ /trunk/LMDZ.COMMON/libf/evolution/stopping_crit_mod.F90	(revision 3985)
@@ -220,7 +220,7 @@
 SUBROUTINE stopping_crit_h2o(ngrid,nslope,cell_area,delta_h2o_adsorbed,delta_h2o_icetablesublim,h2o_ice,d_h2oice,S_atm_2_h2o,S_h2o_2_atm,S_atm_2_h2oice,S_h2oice_2_atm,stopCrit)
 
-use time_evol_mod, only: dt
-use comslope_mod,  only: subslope_dist, def_slope_mean
-use comcstfi_h,    only: pi
+use time_evol_mod,  only: dt
+use comslope_mod,   only: subslope_dist, def_slope_mean
+use phys_constants, only: pi
 
 implicit none
Index: /trunk/LMDZ.COMMON/libf/evolution/tracers.F90
===================================================================
--- /trunk/LMDZ.COMMON/libf/evolution/tracers.F90	(revision 3984)
+++ /trunk/LMDZ.COMMON/libf/evolution/tracers.F90	(revision 3985)
@@ -7,7 +7,5 @@
 
 ! Molar masses of tracers
-type :: mmol
-    real :: h2o
-end type mmol
+real, dimension(:), allocatable :: mmol
 
 !=======================================================================
@@ -30,4 +28,7 @@
 ! Code
 !-----
+! Allocation
+call ini_tracers(nqtot)
+
 ! Initialization
 iPCM_qh2o = -1
@@ -35,7 +36,7 @@
 ! Getting the index
 do i = 1,nqtot
-    if (noms(nnq) == "h2o_vap") then
-        iPCM_qh2o = nnq
-        mmol%h2o = 18.
+    if (noms(i) == "h2o_vap") then
+        iPCM_qh2o = i
+        mmol(i) = 18.
     endif
 enddo
@@ -44,5 +45,40 @@
 if (iPCM_qh2o < 0) error stop 'ini_frost_id: H2O vapour index not found!'
 
-END SUBROUTINE ini_frost_id
+END SUBROUTINE ini_tracers_id
+!=======================================================================
+
+SUBROUTINE ini_tracers(nqtot)
+
+implicit none
+
+! Arguments
+!----------
+integer, intent(in) :: nqtot
+
+! Local variables
+!----------------
+
+! Code
+!-----
+if (.not. allocated(mmol)) allocate(mmol(nqtot))
+
+END SUBROUTINE ini_tracers
+!=======================================================================
+
+SUBROUTINE end_tracers()
+
+implicit none
+
+! Arguments
+!----------
+
+! Local variables
+!----------------
+
+! Code
+!-----
+if (allocated(mmol)) deallocate(mmol)
+
+END SUBROUTINE end_tracers
 
 END MODULE tracers
Index: /trunk/LMDZ.COMMON/makelmdz_fcm
===================================================================
--- /trunk/LMDZ.COMMON/makelmdz_fcm	(revision 3984)
+++ /trunk/LMDZ.COMMON/makelmdz_fcm	(revision 3985)
@@ -505,14 +505,4 @@
 fi
 
-if [[ -d ${LIBFGCM}/evolution &&  "$code" == "reshape_XIOS_output" ]]
-then
-if [[ "$physique" == "std" ]]
-then
-   CPP_KEY="$CPP_KEY CPP_STD"
-fi
-   EVOLUTION_PATH="${LIBFGCM}/evolution"
-   INCLUDE="$INCLUDE -I${LIBFGCM}/evolution"
-fi
-
 
 # NETCDF library include/library paths
