Index: codes/icosagcm/devel/src/unstructured/data_unstructured.F90
===================================================================
--- codes/icosagcm/devel/src/unstructured/data_unstructured.F90	(revision 796)
+++ codes/icosagcm/devel/src/unstructured/data_unstructured.F90	(revision 802)
@@ -12,5 +12,5 @@
   INDEX,  BIND(C) :: caldyn_thermo=thermo_theta, caldyn_eta=eta_lag, &
        caldyn_vert_variant=caldyn_vert_cons, nb_threads=0, nb_stage=0
-  LOGICAL(C_BOOL), BIND(C) :: hydrostatic=.TRUE.
+  LOGICAL(C_BOOL), BIND(C) :: hydrostatic=.TRUE., is_mpi_master=.TRUE., debug_on=.FALSE.
   LOGICAL(C_BOOL), BIND(C, NAME='debug_hevi_solver') :: debug_hevi_solver_=.TRUE.
 
@@ -42,5 +42,5 @@
   NUM2(:,:), ALLOCATABLE          :: centroid, xyz_v, Riv2, wee, ap,bp, mass_bl, mass_dak, mass_dbk
 
-  INTEGER(C_INT), BIND(C) :: comm_icosa, dynamico_mpi_rank=0
+  INTEGER(C_INT), BIND(C) :: comm_icosa
 
   INTEGER, PARAMETER :: id_dev1=1, id_dev2=2, &
@@ -82,5 +82,5 @@
     TIME :: total_spent
     total_spent=SUM(time_spent)
-    IF(dynamico_mpi_rank==0) THEN
+    IF(is_mpi_master) THEN
        PRINT *, '========================= Performance metrics ========================='
        PRINT *, 'Total time spent in instrumented code (seconds) :', total_spent
@@ -139,9 +139,11 @@
     INDEX, DIMENSION(edge_num) :: left_, right_, down_, up_
 
-    PRINT *, 'init_mesh ...'
-    PRINT *, 'Primal mesh : ', primal_num, max_primal_deg
-    PRINT *, 'Dual mesh   : ', dual_num, max_dual_deg
-    PRINT *, 'Edge mesh   : ', edge_num, max_trisk_deg
-    PRINT *, 'Vertical levels :', llm
+    IF(is_mpi_master) THEN
+       PRINT *, 'init_mesh ...'
+       PRINT *, 'Primal mesh : ', primal_num, max_primal_deg
+       PRINT *, 'Dual mesh   : ', dual_num, max_dual_deg
+       PRINT *, '	Edge mesh   : ', edge_num, max_trisk_deg
+       PRINT *, 'Vertical levels :', llm
+    END IF
     ALLOC1(primal_deg, primal_num)
     ALLOC2(primal_edge, max_primal_deg,primal_num)
@@ -153,5 +155,4 @@
     ALLOC1(trisk_deg, edge_num)
     ALLOC2(trisk, max_trisk_deg, edge_num)
-    PRINT *, SHAPE(trisk), edge_num
     ALLOC1(left, edge_num)
     ALLOC1(right, edge_num)
@@ -177,12 +178,14 @@
     trisk_deg(:)=trisk_deg_(:)
     trisk(:,:)=trisk_(:,:)
-    PRINT *, MAXVAL(primal_edge), edge_num
-    PRINT *, MAXVAL(dual_edge), edge_num
-    PRINT *, MAXVAL(dual_vertex), dual_num
-    PRINT *, MAXVAL(trisk), edge_num
-    PRINT *, MAX(MAXVAL(left),MAXVAL(right)), primal_num
-    PRINT *, MAX(MAXVAL(up),MAXVAL(down)), dual_num
-    PRINT *, SHAPE(trisk), edge_num
-    PRINT *,' ... Done.'
+    IF(is_mpi_master) THEN
+       PRINT *, MAXVAL(primal_edge), edge_num
+       PRINT *, MAXVAL(dual_edge), edge_num
+       PRINT *, MAXVAL(dual_vertex), dual_num
+       PRINT *, MAXVAL(trisk), edge_num
+       PRINT *, MAX(MAXVAL(left),MAXVAL(right)), primal_num
+       PRINT *, MAX(MAXVAL(up),MAXVAL(down)), dual_num
+       PRINT *, SHAPE(trisk), edge_num
+       PRINT *,' ... Done.'
+    END IF
   END SUBROUTINE init_mesh
 
@@ -194,5 +197,5 @@
     DBL :: Ai_(primal_num), Av_(dual_num), fv_(dual_num), le_de_(edge_num), &
          Riv2_(max_dual_deg,dual_num), wee_(max_trisk_deg,edge_num)
-    PRINT *, 'init_metric ...'
+    IF(is_mpi_master) PRINT *, 'init_metric ...'
     ALLOC1(Ai,primal_num)
     ALLOC1(Av,dual_num)
@@ -207,15 +210,17 @@
     Riv2(:,:)=Riv2_(:,:)
     wee(:,:) = wee_(:,:)
-    PRINT *, 'Max Ai : ',    MAXVAL(ABS(Ai))
-    PRINT *, 'Max Av : ',    MAXVAL(ABS(Av))
-    PRINT *, 'Max fv : ',    MAXVAL(ABS(fv))
-    PRINT *, 'Max le_de : ', MAXVAL(ABS(le_de))
-    PRINT *, 'Max Riv2 : ',  MAXVAL(ABS(Riv2))
-    PRINT *, 'Max wee : ',   MAXVAL(ABS(wee))
-    PRINT *, MINVAL(right),  MAXVAL(right)
-    PRINT *, MINVAL(right),  MAXVAL(left)
-    PRINT *,' ... Done.'
-    IF(nb_threads==0) nb_threads=OMP_GET_MAX_THREADS()
-    PRINT *,'OpenMP : max_threads, num_procs, nb_threads', OMP_GET_MAX_THREADS(), OMP_GET_NUM_PROCS(), nb_threads
+    IF(is_mpi_master) THEN
+       PRINT *, 'Max Ai : ',    MAXVAL(ABS(Ai))
+       PRINT *, 'Max Av : ',    MAXVAL(ABS(Av))
+       PRINT *, 'Max fv : ',    MAXVAL(ABS(fv))
+       PRINT *, 'Max le_de : ', MAXVAL(ABS(le_de))
+       PRINT *, 'Max Riv2 : ',  MAXVAL(ABS(Riv2))
+       PRINT *, 'Max wee : ',   MAXVAL(ABS(wee))
+       PRINT *, MINVAL(right),  MAXVAL(right)
+       PRINT *, MINVAL(right),  MAXVAL(left)
+       PRINT *,' ... Done.'
+       IF(nb_threads==0) nb_threads=OMP_GET_MAX_THREADS()
+       PRINT *,'OpenMP : max_threads, num_procs, nb_threads', OMP_GET_MAX_THREADS(), OMP_GET_NUM_PROCS(), nb_threads
+    END IF
   END SUBROUTINE init_metric
   !
@@ -225,18 +230,20 @@
   !
   SUBROUTINE init_params() BINDC(init_params)
-    PRINT *, 'Setting physical parameters ...'
-    IF(hydrostatic) THEN
-       PRINT *, 'Hydrostatic dynamics (HPE)'
-    ELSE
-       PRINT *, 'Non-hydrostatic dynamics (Euler)'
-    END IF
     kappa = Rd/cpp
-    PRINT *, 'g = ',g
-    PRINT *, 'preff = ',preff
-    PRINT *, 'Treff = ',Treff
-    PRINT *, 'Rd = ',Rd
-    PRINT *, 'cpp = ',cpp
-    PRINT *, 'kappa = ',kappa
-    PRINT *, '... Done'
+    IF(is_mpi_master) THEN
+       PRINT *, 'Setting physical parameters ...'
+       IF(hydrostatic) THEN
+          PRINT *, 'Hydrostatic dynamics (HPE)'
+       ELSE
+          PRINT *, 'Non-hydrostatic dynamics (Euler)'
+       END IF
+       PRINT *, 'g = ',g
+       PRINT *, 'preff = ',preff
+       PRINT *, 'Treff = ',Treff
+       PRINT *, 'Rd = ',Rd
+       PRINT *, 'cpp = ',cpp
+       PRINT *, 'kappa = ',kappa
+       PRINT *, '... Done'
+    END IF
     CALL init_trace
   END SUBROUTINE init_params
@@ -245,5 +252,5 @@
     DBL :: bl(llm+1, primal_num), &
          dak(llm, primal_num), dbk(llm, primal_num)
-    PRINT *, 'Setting hybrid coefficients ...'
+    IF(is_mpi_master) PRINT *, 'Setting hybrid coefficients ...'
     ALLOC2(mass_bl, llm+1, primal_num)
     ALLOC2(mass_dak, llm, primal_num)
@@ -252,5 +259,5 @@
     mass_dak(:,:) = dak(:,:)
     mass_dbk(:,:) = dbk(:,:)
-    PRINT *, '... Done, llm = ', llm
+    IF(is_mpi_master) PRINT *, '... Done, llm = ', llm
   END SUBROUTINE Init_hybrid
 
Index: codes/icosagcm/devel/src/unstructured/timestep_unstructured.F90
===================================================================
--- codes/icosagcm/devel/src/unstructured/timestep_unstructured.F90	(revision 796)
+++ codes/icosagcm/devel/src/unstructured/timestep_unstructured.F90	(revision 802)
@@ -305,10 +305,6 @@
     ! This is the case when calling from Python after importing mpi4py
     INTEGER :: ierr, mpi_threading_mode
-    
     PRINT *, 'Initialize XIOS and obtain our communicator'
     CALL xios_initialize("icosagcm",return_comm=comm_icosa)
-    
-    PRINT *, 'Initialize our XIOS context'
-    
     CALL xios_context_initialize("icosagcm",comm_icosa)
     CALL xios_get_handle("icosagcm",ctx_hdl)
Index: codes/icosagcm/devel/src/unstructured/transfer_unstructured.F90
===================================================================
--- codes/icosagcm/devel/src/unstructured/transfer_unstructured.F90	(revision 796)
+++ codes/icosagcm/devel/src/unstructured/transfer_unstructured.F90	(revision 802)
@@ -37,5 +37,5 @@
     INTEGER(C_INT) :: send_rank(send_num), send_len(send_num), send_list(send_size), &
          recv_rank(recv_num), recv_len(recv_num), recv_list(recv_size)
-    PRINT *, 'init_transfer', index, &
+    IF(debug_on) PRINT *, 'init_transfer', index, &
        send_num, send_size, '/', send_rank, '/', send_len, '/', &
        recv_num, recv_size, '/', recv_rank, '/', recv_len, '/' 
