From 08472d04a39a711776190089b85c17b9cb84fb46 Mon Sep 17 00:00:00 2001
From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Date: Mon, 6 May 2024 10:16:40 +0200
Subject: [PATCH] Philippe 06/05/2024: outputs: do not write 2D coordinates for
 main domain if not needed

---
 src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90 | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90 b/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90
index d5ffe3f5f..fa5aabd08 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90
@@ -1863,7 +1863,7 @@ if ( .not. lcartesian ) then
     call Gather_hor_coord2d( zxhat,  zyhat,  zlatf_glob, zlonf_glob )
   end if
 
-  if ( tzfile%ctype /= 'MNHOUTPUT' .or. lout_bigbox_write ) then !Do not write coordinates of main domain if it is not written
+  if ( tzfile%ctype /= 'MNHOUTPUT' ) then !Do not write coordinates of main domain if it is not written
     ! Mass point
     call Write_hor_coord2d( zlatm_glob, zlonm_glob,  'latitude',  'longitude',  iim_min, iim_max, ijm_min, ijm_max )
     ! u point
@@ -1872,6 +1872,22 @@ if ( .not. lcartesian ) then
     call Write_hor_coord2d( zlatv_glob, zlonv_glob, 'latitude_v','longitude_v', iiv_min, iiv_max, ijv_min, ijv_max )
     ! xi vorticity point (=f point =uv point)
     call Write_hor_coord2d( zlatf_glob, zlonf_glob, 'latitude_f','longitude_f', iiu_min, iiu_max, ijv_min, ijv_max )
+  else if ( tzfile%ctype == 'MNHOUTPUT' .and. lout_bigbox_write ) then !Do not write coordinates of main domain if it is not written
+    ! Write both coordinates (lat and lon even if only one of them is needed).
+    ! In practice, this simplification should not have real impact (most of the time, the 2 coordinates appear simultaneously)
+
+    ! Mass point
+    if ( tout_boxes(0)%lcoord_latm .or. tout_boxes(0)%lcoord_latm ) &
+      call Write_hor_coord2d( zlatm_glob, zlonm_glob,  'latitude',  'longitude',  iim_min, iim_max, ijm_min, ijm_max )
+    ! u point
+    if ( tout_boxes(0)%lcoord_latu .or. tout_boxes(0)%lcoord_latu ) &
+      call Write_hor_coord2d( zlatu_glob, zlonu_glob, 'latitude_u','longitude_u', iiu_min, iiu_max, iju_min, iju_max )
+    ! v point
+    if ( tout_boxes(0)%lcoord_latv .or. tout_boxes(0)%lcoord_latv ) &
+      call Write_hor_coord2d( zlatv_glob, zlonv_glob, 'latitude_v','longitude_v', iiv_min, iiv_max, ijv_min, ijv_max )
+    ! xi vorticity point (=f point =uv point)
+    if ( tout_boxes(0)%lcoord_latf .or. tout_boxes(0)%lcoord_latf ) &
+      call Write_hor_coord2d( zlatf_glob, zlonf_glob, 'latitude_f','longitude_f', iiu_min, iiu_max, ijv_min, ijv_max )
   end if
 
   Deallocate( zlat, zlon )
-- 
GitLab